\subsection{Entwicklungsprozess und -tools}

Zur Entwicklung von \RENGA wurde ein an Agil Methods, wie beispielsweise in \cite{ExtremeProgramming} und \cite{FDD} beschrieben, angelehnter Softwarentwicklunsprozess verwendet. Hierbei wurden vor allem Ideen aus Feature Driven Design (FDD) und eXtreme Programming (XP) aufgriffen und umgesetzt, soweit dies f\"ur eine Einzelperson m\"oglich war.\\
So wurde stark auf die testgetriebene Entwicklung Wert geleget, jede Klasse wurde, sofern dies sinnvoll war, parallel zu einem Unit-Test entwickelt. Neue eingef\"ugte Funktionalit\"at wurde sofort getestet und danach erst in das zentrale Versioning Control System eingecheckt. Dar\"uber hinaus wurden f\"ur die einzelnen Module Tests entwickelt. \\
Um auch bei gr\"o\ss{}eren \"Anderungen, die beispielsweise durch starkes Refactoring entstehen k\"onnen, ein lauff\"ahiges System garantieren zu k\"onnen, wurde w\"ahrend der Entwicklung ein Continous Integration Server verwendet, der in regelm\"assigen Abst\"anden die Inhalte des zentralen Repository abruft, diese \"ubersetzt, alle Tests durchl\"auft und bei \"Ubersetzungsfehlern oder Fehlverhalten der Software den Entwickler benachrichtigt.\\
Wie in Agile Methods verbreitet wurde weitgehend, mit Ausnahme dieses Dokuments, auf die Erstellung von Dokumentation, vor allem solcher, die den Entwicklungsprozess bis ins Detail vorausplanend beschreibt, verzichtet. Dies f\"uhrt zu einer starken Beschleunigung der Entwicklung, da diese Dokumentation im Vorfeld nicht geschrieben, bzw. w\"ahrend der Entwicklung nicht auf dem Laufenden gehalten werden m\"ussen, wenn sich kleinere \"Anderungen ergeben.\\
Zur Durchsetzung der oben genannten Verfahren wurden unterschiedliche den Entwicklungsprozess unterst\"utzende Programme eingesetzt die im folgendne kurz beschrieben werden sollen.

\subsubsection{Ant}
Ant \cite{Ant} ist ein im Rahmen des Apache Projektes entwickelter Ersatz f\"ur das Programm Make bzw. eine Weiterentwicklung, die vor allem auf den Einsatz in Java-Projekten zugeschnitten ist. \"Ahnlich wie bei Make werden unterschiedliche Targets angegeben, die beispielsweise das Kompilieren, in Pakete verpacken oder automatische Testen von Programmteilen unter Beachtung der auftretenden Abh\"angigkeiten realisieren. Ant-Build-Dateien sind meist wesentlich leichter zu pflegen. Weiter ist der Autor gut mit der Verwendung von Ant vertraut, was Ant den Vorzug gegen\"uber Make gab.

\subsubsection{JUnit}
JUnit \cite{JUnit} ist ein von Kent Beck und Erich Gamma nach dem Vorbild von SUnit entwickeltes Framework zum automatiserten Testen von  in Java geschriebener Software. Durch geschickte Strukturierung ist es mit JUnit m\"oglich, Tests auf verschiedenen Ebenen durchzuf\"uhren. So kann die Funktionalit\"at von einzelnen Klassen oder Modulen getestet werden, aber auch vollst\"andige Integrationstests k\"onnen durchlaufen werden. Der Einsatz von JUnit bietet sich vor allem auch aufgrund der guten Integration mit Ant als Unit-Testing-Framework an.

\subsubsection{Continuum}
Continuum \cite{Continuum} ist ein im Rahmen des Maven-Projekts der Apache Foundation entstandener Continuous Integration Server. Continuum greift f\"ur die automatische \"Ubersetzung auf die ebenfalls innerhalb der Apache Foundation entwickelten Programme Maven oder Ant zur\"uck, was dessen Einsatz zus\"atzlich bevorzugt.

\subsubsection{Subversion}
Subversion \cite{Subversion} ist ein Versioning Control System und ist als Ersatz f\"ur das bekannte CVS entstanden. Es bietet diesem gegen\"uber gro\ss{}e Vorteile bei der Verwaltung des Projektes. Beispielsweise lassen sich Dateien und Verzeichnisse verschieben oder kopieren, ohne die Versionshistorie zu verlieren. Weiter ist ein sicheres Subversionsystem leichter aufzusetzen als ein entsprechendes CVS und Subversion ist gut in Ant und Continuum integriert, was Subversion den Vorzug gegen\"uber CVS gab.
